package com.impinj.program;

import java.io.IOException;
import java.io.InputStream;
import java.nio.channels.UnresolvedAddressException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;

import com.impinj.octane.ImpinjReader;
import com.impinj.octane.OctaneSdkException;

public class InitializeReader {
	// 声明静态变量
	 private static Properties properties;
	
	
	// 这是一个读写器初始化的程序
	static {
		// 从 db 获取流文件
		InputStream inputString = 
				ClassLoader.getSystemResourceAsStream("db.properties");
		// 新建 properties 对象
		properties = new Properties();
		// 尝试加载流文件
		try {
			// 加载文件
			properties.load(inputString);
			System.out.println("配置文件加载成功");
			// 获取读写器
			
		} catch (IOException e) {
			System.out.println("未发现配置文件");
		}
	}
	
	/**  
	 * @Title: getHostname
	 * @Description: 从 properties 文件中获取读写器的 hostname 
	 * @return 将读取到的 hostname 返回
	 * @author Black00white
	 * @date 2024-03-08 11:25:33 
	 */  
	public static String getHostname() {
		String hostname = properties != null ? properties.getProperty("hostname") : null;
		if (InitializeReader.isLinux()) {
			hostname = hostname + ".local";
		}
	    if (hostname != null) {
	        System.out.println("读写器地址'" + hostname + "'获取成功");
	    } else {
	        System.out.println("读写器地址获取失败或地址为空");
	    }
		return hostname;
	}
	
	// 连接读写器
	public static boolean connectToReader(ImpinjReader reader, String hostname) {
		try {
			System.out.print("正在连接读写器 : " + hostname + "    ");
			reader.connect(hostname);
			System.out.println("读写器连接成功");
			return true;
		}catch (UnresolvedAddressException e) {
	        System.out.println("读写器连接失败 : 无法解析的地址或读写器未启动");
	        return false;
	    } catch (OctaneSdkException e) {
	        System.out.println("读写器连接失败。错误原因 ：" + e);
	        System.out.println("请尝试重启读写器");
	        return false;
	    }
		
	}
	
	/**  
	 * @Title: delay
	 * @Description: 延时模块，用于设计程序的延时
	 * @param time : 参数是延时的秒
	 * @author Black00white
	 * @date 2024-03-08 11:24:23 
	 */  
	public static void delay(int time) {
		try {
			TimeUnit.SECONDS.sleep(time);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**  
	 * @Title: isLinux
	 * @Description: 判断当前程序运行在 windows 下还是 linux 下
	 * @return
	 * @author Black00white
	 * @date 2024-03-08 11:25:04 
	 */  
	public static boolean isLinux() {
		return System.getProperty("os.name").toLowerCase().contains("linux");
	}

}
